package com.loongnoy.shortlink.admin.common.convention.serialize;

import cn.hutool.core.util.DesensitizedUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;

/**
 * 手机号脱敏反序列化
 */
public class PhoneDesensitizationSerializer extends JsonSerializer<String> {

    /**
     * 重写serialize方法以实现电话号码的脱敏处理
     *
     * @param phone 电话号码
     * @param jsonGenerator 用于生成JSON的工具类
     * @param serializerProvider 提供序列化器的实例，用于获取序列化上下文
     * @throws IOException 当写入操作出现错误时抛出此异常
     */
    @Override
    public void serialize(String phone, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        // 使用DesensitizedUtil工具类对电话号码进行脱敏处理
        String phoneDesensitization = DesensitizedUtil.mobilePhone(phone);
        // 将脱敏后的电话号码写入JSON
        jsonGenerator.writeString(phoneDesensitization);
    }
}